package 牛客.二叉树;

import 剑指offer.TreeNode;

import java.util.LinkedList;
import java.util.Queue;

public class BM35判断是不是完全二叉树 {
    public boolean isCompleteTree (TreeNode root) {
        // write code here
        if (root==null) {
            return true;
        }

        Queue<TreeNode> queue=new LinkedList<>();
        queue.offer(root);
        boolean flag=false;//标志位，当遇到空节点时，改为true
        //完全二叉树遇到一个空节点后，此后队列中应该都为空节点，因此我们根据这一点去判断
        TreeNode cur;
        while (!queue.isEmpty()) {
            //层序遍历
            cur=queue.poll();
            if (cur==null) {
                flag=true;
                continue;
            }

            if (flag) {
                return false;
            }
            queue.offer(cur.left);
            queue.offer(cur.right);
        }
        return true;
    }
}
